Consumers today have access to a tremendous variety of content, such as television programs, movies, sports broadcasts, and so forth. While a variety of content delivery methods are available, content streaming is quickly becoming a primary avenue via which many consumers obtain and consume content. Content streaming enables content to be retrieved from a variety of resources via a media stream, such as from various web-based content resources.
While content streaming provides a convenient and flexible way for obtaining content, it also presents a number of implementation challenges. For example, the quality of a consumer content streaming experience can be affected if significant variations in streaming resources (e.g., data bandwidth, available central processing unit (CPU) capacity, and so forth) occur while content is being streamed.
Different techniques for compensating for such variations in streaming resources have been developed. One such technique is adaptive bitrate streaming, which can be implemented in a variety of different ways. Typically, adaptive bitrate streaming involves encoding an instance of content at multiple different bitrates to generate multiple bitrate streams. Generally, the bitrate streams correspond to versions of the instance of content at different bitrates. Each of the bitrate streams is then segmented into multiple discrete segments. When playback of the instance of content is initiated on a device, a bitrate stream can be selected and streamed based on streaming resources currently available to the device, e.g., network bandwidth, CPU bandwidth, and so forth. For instance, the bitrate stream can be transmitted to the device on a segment-by-segment basis.
If a variation in streaming resources occurs while the bitrate stream is being transmitted, a different bitrate stream can be selected and streamed in place of the original bitrate stream. For instance, if network bandwidth significantly decreases, a lower bandwidth bitrate stream can be streamed. Similarly, if network bandwidth significantly increases, a higher bandwidth bitrate stream can be streamed. Segmentation of the different bitrate streams enables switching between different bitrate streams to occur at segment boundaries, e.g., when a particular segment of a currently streaming bitrate stream finishes playback.
While adaptive bitrate streaming provides ways for compensating for changes in streaming resources during playback of content, it also presents some challenges to inserting supplementary content (e.g., advertisements) into a content stream. For example, inserting supplementary content into a content stream processed based on current techniques for adaptive bitrate streaming is typically limited to insertion of the supplementary content at a segment boundary.